home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / DJLSR111.ZIP / libsrc / c / gen / sysconf.c < prev    next >
C/C++ Source or Header  |  1992-08-24  |  3KB  |  97 lines

  1. /*
  2.   (c) Copyright 1992 Eric Backus
  3.  
  4.   This software may be used freely so long as this copyright notice is
  5.   left intact.  There is no warrantee on this software.
  6. */
  7.  
  8. #include <errno.h>        /* For EINVAL */
  9. #include <unistd.h>        /* For _SC_* */
  10. #include <limits.h>        /* For *_MAX, etc. */
  11. #include <time.h>        /* For CLOCKS_PER_SEC */
  12.  
  13. /* The _SC_* values for "name" should be defined in <unistd.h> */
  14. /* The corresponding constants should be defined in <limits.h> */
  15. long
  16. sysconf(int name)
  17. {
  18.     switch (name)
  19.     {
  20.     /* POSIX.1 */
  21.     case _SC_ARG_MAX:        return ARG_MAX;
  22.     case _SC_CHILD_MAX:        return CHILD_MAX;
  23.     case _SC_CLK_TCK:        return CLK_TCK;
  24.     case _SC_NGROUPS_MAX:    return NGROUPS_MAX;
  25.     case _SC_OPEN_MAX:        return OPEN_MAX;
  26. #ifdef    _POSIX_JOB_CONTROL
  27.     case _SC_JOB_CONTROL:    return _POSIX_JOB_CONTROL;
  28. #else
  29.     case _SC_JOB_CONTROL:    return -1;
  30. #endif
  31. #ifdef    _POSIX_SAVED_IDS
  32.     case _SC_SAVED_IDS:     return _POSIX_SAVED_IDS;
  33. #else
  34.     case _SC_SAVED_IDS:        return -1;
  35. #endif
  36. #ifdef    _POSIX_VERSION
  37.     case _SC_VERSION:        return _POSIX_VERSION;
  38. #else
  39.     case _SC_VERSION:        return -1;
  40. #endif
  41.  
  42.     /* POSIX.1 + X/Open */
  43. #ifdef    _XOPEN_VERSION
  44.     case _SC_XOPEN_VERSION:    return _XOPEN_VERSION;    /* From <unistd.h> */
  45. #else
  46.     case _SC_XOPEN_VERSION:    return -1;
  47. #endif
  48.     case _SC_PASS_MAX:        return PASS_MAX;
  49.  
  50.     /* POSIX.1-1990 */
  51.     case _SC_STREAM_MAX:    return _POSIX_STREAM_MAX;
  52.     case _SC_TZNAME_MAX:    return TZNAME_MAX;
  53.  
  54.     /* POSIX.2 */
  55.     case _SC_BC_BASE_MAX:    return BC_BASE_MAX;
  56.     case _SC_BC_DIM_MAX:    return BC_DIM_MAX;
  57.     case _SC_BC_SCALE_MAX:    return BC_SCALE_MAX;
  58.     case _SC_COLL_ELEM_MAX:    return COLL_ELEM_MAX;
  59.     case _SC_EXPR_NEST_MAX:    return EXPR_NEST_MAX;
  60.     case _SC_LINE_MAX:        return LINE_MAX;
  61.     case _SC_PASTE_FILES_MAX:    return PASTE_FILES_MAX;
  62.     case _SC_RE_DUP_MAX:    return RE_DUP_MAX;
  63.     case _SC_SED_PATTERN_MAX:    return SED_PATTERN_MAX;
  64.     case _SC_SENDTO_MAX:    return SENDTO_MAX;
  65.     case _SC_SORT_LINE_MAX:    return SORT_LINE_MAX;
  66. #ifdef    _POSIX2_VERSION
  67.     case _SC_2_VERSION:        return _POSIX2_VERSION;
  68.     case _SC_2_C_BIND:        return _POSIX2_C_BIND;
  69.     case _SC_2_C_DEV:        return _POSIX2_C_DEV;
  70.     case _SC_2_FORT_DEV:    return _POSIX2_FORT_DEV;
  71.     case _SC_2_SW_DEV:        return _POSIX2_SW_DEV;
  72. #else
  73.     case _SC_2_VERSION:        return -1;
  74.     case _SC_2_C_BIND:        return -1;
  75.     case _SC_2_C_DEV:        return -1;
  76.     case _SC_2_FORT_DEV:    return -1;
  77.     case _SC_2_SW_DEV:        return -1;
  78. #endif
  79.  
  80.     /* X/Open */
  81.     case _SC_CLOCKS_PER_SEC:    return CLOCKS_PER_SEC;    /* From <time.h>! */
  82.  
  83.     /* OSF */
  84. #ifdef    _AES_OS_VERSION
  85.     case _SC_AES_OS_VERSION:    return _AES_OS_VERSION;
  86. #else
  87.     case _SC_AES_OS_VERSION:    return -1;
  88. #endif
  89.     case _SC_PAGE_SIZE:        return 4096;        /* From ??? */
  90.     case _SC_ATEXIT_MAX:    return ATEXIT_MAX;
  91.  
  92.     default:
  93.     errno = EINVAL;
  94.     return -1;
  95.     }
  96. }
  97.